home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / info / internals.info-3.z / internals.info-3
Encoding:
GNU Info File  |  1998-05-21  |  47.8 KB  |  1,146 lines

  1. This is Info file ../../info/internals.info, produced by Makeinfo
  2. version 1.68 from the input file internals.texi.
  3.  
  4.    Copyright (C) 1992 - 1996 Ben Wing.  Copyright (C) 1996, 1997 Sun
  5. Microsystems.  Copyright (C) 1994, 1995 Free Software Foundation.
  6. Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
  7.  
  8.    Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.  
  12.    Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided that the
  14. entire resulting derived work is distributed under the terms of a
  15. permission notice identical to this one.
  16.  
  17.    Permission is granted to copy and distribute translations of this
  18. manual into another language, under the above conditions for modified
  19. versions, except that this permission notice may be stated in a
  20. translation approved by the Foundation.
  21.  
  22.    Permission is granted to copy and distribute modified versions of
  23. this manual under the conditions for verbatim copying, provided also
  24. that the section entitled "GNU General Public License" is included
  25. exactly as in the original, and provided that the entire resulting
  26. derived work is distributed under the terms of a permission notice
  27. identical to this one.
  28.  
  29.    Permission is granted to copy and distribute translations of this
  30. manual into another language, under the above conditions for modified
  31. versions, except that the section entitled "GNU General Public License"
  32. may be included in a translation approved by the Free Software
  33. Foundation instead of in the original English.
  34.  
  35. 
  36. File: internals.info,  Node: Basic Lisp Modules,  Next: Modules for Standard Editing Operations,  Prev: Low-Level Modules,  Up: A Summary of the Various XEmacs Modules
  37.  
  38. Basic Lisp Modules
  39. ==================
  40.  
  41.         size  name
  42.      -------  ---------------------
  43.        70167  emacsfns.h
  44.         6305  lisp-disunion.h
  45.         7086  lisp-union.h
  46.        54929  lisp.h
  47.        14235  lrecord.h
  48.        10728  symsinit.h
  49.  
  50.    These are the basic header files for all XEmacs modules.  Each module
  51. includes `lisp.h', which brings the other header files in.  `lisp.h'
  52. contains the definitions of the structures and extractor and
  53. constructor macros for the basic Lisp objects and various other basic
  54. definitions for the Lisp environment, as well as some general-purpose
  55. definitions (e.g. `min()' and `max()').  `lisp.h' includes either
  56. `lisp-disunion.h' or `lisp-union.h', depending on whether
  57. `NO_UNION_TYPE' is defined.  These files define the typedef of the Lisp
  58. object itself (as described above) and the low-level macros that hide
  59. the actual implementation of the Lisp object.  All extractor and
  60. constructor macros for particular types of Lisp objects are defined in
  61. terms of these low-level macros.
  62.  
  63.    As a general rule, all typedefs should go into the typedefs section
  64. of `lisp.h' rather than into a module-specific header file even if the
  65. structure is defined elsewhere.  This allows function prototypes that
  66. use the typedef to be placed into `emacsfns.h'.  Forward structure
  67. declarations (i.e. a simple declaration like `struct foo;' where the
  68. structure itself is defined elsewhere) should be placed into the
  69. typedefs section as necessary.
  70.  
  71.    `lrecord.h' contains the basic structures and macros that implement
  72. all record-type Lisp objects - i.e. all objects whose type is a field
  73. in their C structure, which includes all objects except the few most
  74. basic ones.
  75.  
  76.    `emacsfns.h' contains prototypes for most of the exported functions
  77. in the various modules. (In particular, prototypes for Lisp primitives
  78. should always go into this header file.  Prototypes for other functions
  79. can either go here or in a module-specific header file, depending on how
  80. general-purpose the function is and whether it has special-purpose
  81. argument types requiring definitions not in `lisp.h'.)  All
  82. initialization functions are prototyped in `symsinit.h'.
  83.  
  84.       120478  alloc.c
  85.         1029  pure.c
  86.         2506  puresize.h
  87.  
  88.    The large module `alloc.c' implements all of the basic allocation and
  89. garbage collection for Lisp objects.  The most commonly used Lisp
  90. objects are allocated in chunks, similar to the Blocktype data type
  91. described above; others are allocated in individually `malloc()'ed
  92. blocks.  This module provides the foundation on which all other aspects
  93. of the Lisp environment sit, and is the first module initialized at
  94. startup.
  95.  
  96.    Note that `alloc.c' provides a series of generic functions that are
  97. not dependent on any particular object type, and interfaces to
  98. particular types of objects using a standardized interface of
  99. type-specific methods.  This scheme is a fundamental principle of
  100. object-oriented programming and is heavily used throughout XEmacs.  The
  101. great advantage of this is that it allows for a clean separation of
  102. functionality into different modules - new classes of Lisp objects, new
  103. event interfaces, new device types, new stream interfaces, etc. can be
  104. added transparently without affecting code anywhere else in XEmacs.
  105. Because the different subsystems are divided into general and specific
  106. code, adding a new subtype within a subsystem will in general not
  107. require changes to the generic subsystem code or affect any of the other
  108. subtypes in the subsystem; this provides a great deal of robustness to
  109. the XEmacs code.
  110.  
  111.    `pure.c' contains the declaration of the "purespace" array.  Pure
  112. space is a hack used to place some constant Lisp data into the code
  113. segment of the XEmacs executable, even though the data needs to be
  114. initialized through function calls.  (See above in section VIII for more
  115. info about this.)  During startup, certain sorts of data is
  116. automatically copied into pure space, and other data is copied manually
  117. in some of the basic Lisp files by calling the function `purecopy',
  118. which copies the object if possible (this only works in temacs, of
  119. course) and returns the new object.  In particular, while temacs is
  120. executing, the Lisp reader automatically copies all compiled-function
  121. objects that it reads into pure space.  Since compiled-function objects
  122. are large, are never modified, and typically comprise the majority of
  123. the contents of a compiled-Lisp file, this works well.  While XEmacs is
  124. running, any attempt to modify an object that resides in pure space
  125. causes an error.  Objects in pure space are never garbage collected -
  126. almost all of the time, they're intended to be permanent, and in any
  127. case you can't write into pure space to set the mark bits.
  128.  
  129.    `puresize.h' contains the declaration of the size of the pure space
  130. array.  This depends on the optional features that are compiled in, any
  131. extra purespace requested by the user at compile time, and certain other
  132. factors (e.g. 64-bit machines need more pure space because their Lisp
  133. objects are larger).  The smallest size that suffices should be used, so
  134. that there's no wasted space.  If there's not enough pure space, you
  135. will get an error during the build process, specifying how much more
  136. pure space is needed.
  137.  
  138.       122243  eval.c
  139.         2305  backtrace.h
  140.  
  141.    This module contains all of the functions to handle the flow of
  142. control.  This includes the mechanisms of defining functions, calling
  143. functions, traversing stack frames, and binding variables; the control
  144. primitives and other special forms such as `while', `if', `eval',
  145. `let', `and', `or', `progn', etc.; handling of non-local exits,
  146. unwind-protects, and exception handlers; entering the debugger; methods
  147. for the subr Lisp object type; etc.  It does *not* include the `read'
  148. function, the `print' function, or the handling of symbols and obarrays.
  149.  
  150.    `backtrace.h' contains some structures related to stack frames and
  151. the flow of control.
  152.  
  153.        64949  lread.c
  154.  
  155.    This module implements the Lisp reader and the `read' function,
  156. which converts text into Lisp objects, according to the read syntax of
  157. the objects, as described above.  This is similar to the parser that is
  158. a part of all compilers.
  159.  
  160.        40900  print.c
  161.  
  162.    This module implements the Lisp print mechanism and the `print'
  163. function and related functions.  This is the inverse of the Lisp reader
  164. - it converts Lisp objects to a printed, textual representation.
  165. (Hopefully something that can be read back in using `read' to get an
  166. equivalent object.)
  167.  
  168.         4518  general.c
  169.        60220  symbols.c
  170.         9966  symeval.h
  171.  
  172.    `symbols.c' implements the handling of symbols, obarrays, and
  173. retrieving the values of symbols.  Much of the code is devoted to
  174. handling the special "symbol-value-magic" objects that define special
  175. types of variables - this includes buffer-local variables, variable
  176. aliases, variables that forward into C variables, etc.  This module is
  177. initialized extremely early (right after `alloc.c'), because it is here
  178. that the basic symbols `t' and `nil' are created, and those symbols are
  179. used everywhere throughout XEmacs.
  180.  
  181.    `symeval.h' contains the definitions of symbol structures and the
  182. `DEFVAR_LISP()' and related macros for declaring variables.
  183.  
  184.        48973  data.c
  185.        25694  floatfns.c
  186.        71049  fns.c
  187.  
  188.    These modules implement the methods and standard Lisp primitives for
  189. all the basic Lisp object types other than symbols (which are described
  190. above).  `data.c' contains all the predicates (primitives that return
  191. whether an object is of a particular type); the integer arithmetic
  192. functions; and the basic accessor and mutator primitives for the various
  193. object types.  `fns.c' contains all the standard predicates for working
  194. with sequences (where, abstractly speaking, a sequence is an ordered set
  195. of objects, and can be represented by a list, string, vector, or
  196. bit-vector); it also contains `equal', perhaps on the grounds that bulk
  197. of the operation of `equal' is comparing sequences.  `floatfns.c'
  198. contains methods and primitives for floats and floating-point
  199. arithmetic.
  200.  
  201.        23555  bytecode.c
  202.         3358  bytecode.h
  203.  
  204.    `bytecode.c' implements the byte-code interpreter, and `bytecode.h'
  205. contains associated structures.  Note that the byte-code *compiler* is
  206. written in Lisp.
  207.  
  208. 
  209. File: internals.info,  Node: Modules for Standard Editing Operations,  Next: Editor-Level Control Flow Modules,  Prev: Basic Lisp Modules,  Up: A Summary of the Various XEmacs Modules
  210.  
  211. Modules for Standard Editing Operations
  212. =======================================
  213.  
  214.         size  name
  215.      -------  ---------------------
  216.        82900  buffer.c
  217.        60964  buffer.h
  218.         6059  bufslots.h
  219.  
  220.    `buffer.c' implements the "buffer" Lisp object type.  This includes
  221. functions that create and destroy buffers; retrieve buffers by name or
  222. by other properties; manipulate lists of buffers (remember that buffers
  223. are permanent objects and stored in various ordered lists); retrieve or
  224. change buffer properties; etc.  It also contains the definitions of all
  225. the built-in buffer-local variables (which can be viewed as buffer
  226. properties).  It does *not* contain code to manipulate buffer-local
  227. variables (that's in `symbols.c', described above); or code to
  228. manipulate the text in a buffer.
  229.  
  230.    `buffer.h' defines the structures associated with a buffer and the
  231. various macros for retrieving text from a buffer and special buffer
  232. positions (e.g. `point', the default location for text insertion).  It
  233. also contains macros for working with buffer positions and converting
  234. between their representations as character offsets and as byte offsets
  235. (under MULE, they are different, because characters can be multi-byte).
  236. It is one of the largest header files.
  237.  
  238.    `bufslots.h' defines the fields in the buffer structure that
  239. correspond to the built-in buffer-local variables.  It is its own
  240. header file because it is included many times in `buffer.c', as a way
  241. of iterating over all the built-in buffer-local variables.
  242.  
  243.        79888  insdel.c
  244.         6103  insdel.h
  245.  
  246.    `insdel.c' contains low-level functions for inserting and deleting
  247. text in a buffer, keeping track of changed regions for use by
  248. redisplay, and calling any before-change and after-change functions
  249. that may have been registered for the buffer.  It also contains the
  250. actual functions that convert between byte offsets and character
  251. offsets.
  252.  
  253.    `insdel.h' contains associated headers.
  254.  
  255.        10975  marker.c
  256.  
  257.    This module implements the "marker" Lisp object type, which
  258. conceptually is a pointer to a text position in a buffer that moves
  259. around as text is inserted and deleted, so as to remain in the same
  260. relative position.  This module doesn't actually move the markers around
  261. - that's handled in `insdel.c'.  This module just creates them and
  262. implements the primitives for working with them.  As markers are simple
  263. objects, this does not entail much.
  264.  
  265.    Note that the standard arithmetic primitives (e.g. `+') accept
  266. markers in place of integers and automatically substitute the value of
  267. `marker-position' for the marker, i.e. an integer describing the
  268. current buffer position of the marker.
  269.  
  270.       193714  extents.c
  271.        15686  extents.h
  272.  
  273.    This module implements the "extent" Lisp object type, which is like
  274. a marker that works over a range of text rather than a single position.
  275. Extents are also much more complex and powerful than markers and have a
  276. more efficient (and more algorithmically complex) implementation.  The
  277. implementation is described in detail in comments in `extents.c'.
  278.  
  279.    The code in `extents.c' works closely with `insdel.c' so that
  280. extents are properly moved around as text is inserted and deleted.
  281. There is also code in `extents.c' that provides information needed by
  282. the redisplay mechanism for efficient operation. (Remember that extents
  283. can have display properties that affect [sometimes drastically, as in
  284. the `invisible' property] the display of the text they cover.)
  285.  
  286.        60155  editfns.c
  287.  
  288.    `editfns.c' contains the standard Lisp primitives for working with a
  289. buffer's text, and calls the low-level functions in `insdel.c'.  It
  290. also contains primitives for working with `point' (the default buffer
  291. insertion location).
  292.  
  293.    `editfns.c' also contains functions for retrieving various
  294. characteristics from the external environment: the current time, the
  295. process ID of the running XEmacs process, the name of the user who ran
  296. this XEmacs process, etc.  It's not clear why this code is in
  297. `editfns.c'.
  298.  
  299.        26081  callint.c
  300.        12577  cmds.c
  301.         2749  commands.h
  302.  
  303.    These modules implement the basic "interactive" commands, i.e.
  304. user-callable functions.  Commands, as opposed to other functions, have
  305. special ways of getting their parameters interactively (by querying the
  306. user), as opposed to having them passed in a normal function
  307. invocation.  Many commands are not really meant to be called from other
  308. Lisp functions, because they modify global state in a way that's often
  309. undesired as part of other Lisp functions.
  310.  
  311.    `callint.c' implements the mechanism for querying the user for
  312. parameters and calling interactive commands.  The bulk of this module is
  313. code that parses the interactive spec that is supplied with an
  314. interactive command.
  315.  
  316.    `cmds.c' implements the basic, most commonly used editing commands:
  317. commands to move around the current buffer and insert and delete
  318. characters.  These commands are implemented using the Lisp primitives
  319. defined in `editfns.c'.
  320.  
  321.    `commands.h' contains associated structure definitions and
  322. prototypes.
  323.  
  324.       194863  regex.c
  325.        18968  regex.h
  326.        79800  search.c
  327.  
  328.    `search.c' implements the Lisp primitives for searching for text in
  329. a buffer, and some of the low-level algorithms for doing this.  In
  330. particular, the fast fixed-string Boyer-Moore search algorithm is
  331. implemented in `search.c'.  The low-level algorithms for doing
  332. regular-expression searching, however, are implemented in `regex.c' and
  333. `regex.h'.  These two modules are largely independent of XEmacs, and
  334. are similar to (and based upon) the regular-expression routines used in
  335. `grep' and other GNU utilities.
  336.  
  337.        20476  doprnt.c
  338.  
  339.    `doprnt.c' implements formatted-string processing, similar to
  340. `printf()' command in C.
  341.  
  342.        15372  undo.c
  343.  
  344.    This module implements the undo mechanism for tracking buffer
  345. changes.  Most of this could be implemented in Lisp.
  346.  
  347. 
  348. File: internals.info,  Node: Editor-Level Control Flow Modules,  Next: Modules for the Basic Displayable Lisp Objects,  Prev: Modules for Standard Editing Operations,  Up: A Summary of the Various XEmacs Modules
  349.  
  350. Editor-Level Control Flow Modules
  351. =================================
  352.  
  353.         size  name
  354.      -------  ---------------------
  355.        84546  event-Xt.c
  356.       121483  event-stream.c
  357.         6658  event-tty.c
  358.        49271  events.c
  359.        14459  events.h
  360.  
  361.    These implement the handling of events (user input and other system
  362. notifications).
  363.  
  364.    `events.c' and `events.h' define the "event" Lisp object type and
  365. primitives for manipulating it.
  366.  
  367.    `event-stream.c' implements the basic functions for working with
  368. event queues, dispatching an event by looking it up in relevant keymaps
  369. and such, and handling timeouts; this includes the primitives
  370. `next-event' and `dispatch-event', as well as related primitives such
  371. as `sit-for', `sleep-for', and `accept-process-output'.
  372. (`event-stream.c' is one of the hairiest and trickiest modules in
  373. XEmacs.  Beware!  You can easily mess things up here.)
  374.  
  375.    `event-Xt.c' and `event-tty.c' implement the low-level interfaces
  376. onto retrieving events from Xt (the X toolkit) and from TTY's (using
  377. `read()' and `select()'), respectively.  The event interface enforces a
  378. clean separation between the specific code for interfacing with the
  379. operating system and the generic code for working with events, by
  380. defining an API of basic, low-level event methods; `event-Xt.c' and
  381. `event-tty.c' are two different implementations of this API.  To add
  382. support for a new operating system (e.g. NeXTstep), one merely needs to
  383. provide another implementation of those API functions.
  384.  
  385.    Note that the choice of whether to use `event-Xt.c' or `event-tty.c'
  386. is made at compile time!  Or at the very latest, it is made at startup
  387. time.  `event-Xt.c' handles events for *both* X and TTY frames;
  388. `event-tty.c' is only used when X support is not compiled into XEmacs.
  389. The reason for this is that there is only one event loop in XEmacs:
  390. thus, it needs to be able to receive events from all different kinds of
  391. frames.
  392.  
  393.       129583  keymap.c
  394.         2621  keymap.h
  395.  
  396.    `keymap.c' and `keymap.h' define the "keymap" Lisp object type and
  397. associated methods and primitives. (Remember that keymaps are objects
  398. that associate event descriptions with functions to be called to
  399. "execute" those events; `dispatch-event' looks up events in the
  400. relevant keymaps.)
  401.  
  402.        25212  keyboard.c
  403.  
  404.    `keyboard.c' contains functions that implement the actual editor
  405. command loop - i.e. the event loop that cyclically retrieves and
  406. dispatches events.  This code is also rather tricky, just like
  407. `event-stream.c'.
  408.  
  409.         9973  macros.c
  410.         1397  macros.h
  411.  
  412.    These two modules contain the basic code for defining keyboard
  413. macros.  These functions don't actually do much; most of the code that
  414. handles keyboard macros is mixed in with the event-handling code in
  415. `event-stream.c'.
  416.  
  417.        23234  minibuf.c
  418.  
  419.    This contains some miscellaneous code related to the minibuffer
  420. (most of the minibuffer code was moved into Lisp by Richard Mlynarik).
  421. This includes the primitives for completion (although filename
  422. completion is in `dired.c'), the lowest-level interface to the
  423. minibuffer (if the command loop were cleaned up, this too could be in
  424. Lisp), and code for dealing with the echo area (this, too, was mostly
  425. moved into Lisp, and the only code remaining is code to call out to
  426. Lisp or provide simple bootstrapping implementations early in temacs,
  427. before the echo-area Lisp code is loaded).
  428.  
  429. 
  430. File: internals.info,  Node: Modules for the Basic Displayable Lisp Objects,  Next: Modules for other Display-Related Lisp Objects,  Prev: Editor-Level Control Flow Modules,  Up: A Summary of the Various XEmacs Modules
  431.  
  432. Modules for the Basic Displayable Lisp Objects
  433. ==============================================
  434.  
  435.         size  name
  436.      -------  ---------------------
  437.          985  device-ns.h
  438.         6454  device-stream.c
  439.         1196  device-stream.h
  440.         9526  device-tty.c
  441.         8660  device-tty.h
  442.        43798  device-x.c
  443.        11667  device-x.h
  444.        26056  device.c
  445.        22993  device.h
  446.  
  447.    These modules implement the "device" Lisp object type.  This
  448. abstracts a particular screen or connection on which frames are
  449. displayed.  As with Lisp objects, event interfaces, and other
  450. subsystems, the device code is separated into a generic component that
  451. contains a standardized interface (in the form of a set of methods) onto
  452. particular device types.
  453.  
  454.    The device subsystem defines all the methods and provides method
  455. services for not only device operations but also for the frame, window,
  456. menubar, scrollbar, toolbar, and other displayable-object subsystems.
  457. The reason for this is that all of these subsystems have the same
  458. subtypes (X, TTY, NeXTstep, Microsoft Windows, etc.) as devices do.
  459.  
  460.          934  frame-ns.h
  461.         2303  frame-tty.c
  462.        69205  frame-x.c
  463.         5976  frame-x.h
  464.        68175  frame.c
  465.        15080  frame.h
  466.  
  467.    Each device contains one or more frames in which objects (e.g. text)
  468. are displayed.  A frame corresponds to a window in the window system;
  469. usually this is a top-level window but it could potentially be one of a
  470. number of overlapping child windows within a top-level window, using the
  471. MDI (Multiple Document Interface) protocol in Microsoft Windows or a
  472. similar scheme.
  473.  
  474.    The `frame-*' files implement the "frame" Lisp object type and
  475. provide the generic and device-type-specific operations on frames (e.g.
  476. raising, lowering, resizing, moving, etc.).
  477.  
  478.       160783  window.c
  479.        15974  window.h
  480.  
  481.    Each frame consists of one or more non-overlapping "windows" (better
  482. known as "panes" in standard window-system terminology) in which a
  483. buffer's text can be displayed.  Windows can also have scrollbars
  484. displayed around their edges.
  485.  
  486.    `window.c' and `window.h' implement the "window" Lisp object type
  487. and provide code to manage windows.  Since windows have no associated
  488. resources in the window system (the window system knows only about the
  489. frame; no child windows or anything are used for XEmacs windows), there
  490. is no device-type-specific code here; all of that code is part of the
  491. redisplay mechanism or the code for particular object types such as
  492. scrollbars.
  493.  
  494. 
  495. File: internals.info,  Node: Modules for other Display-Related Lisp Objects,  Next: Modules for the Redisplay Mechanism,  Prev: Modules for the Basic Displayable Lisp Objects,  Up: A Summary of the Various XEmacs Modules
  496.  
  497. Modules for other Display-Related Lisp Objects
  498. ==============================================
  499.  
  500.         size  name
  501.      -------  ---------------------
  502.        54397  faces.c
  503.        15173  faces.h
  504.  
  505.         4961  bitmaps.h
  506.          954  glyphs-ns.h
  507.       105345  glyphs-x.c
  508.         4288  glyphs-x.h
  509.        72102  glyphs.c
  510.        16356  glyphs.h
  511.  
  512.          952  objects-ns.h
  513.         9971  objects-tty.c
  514.         1465  objects-tty.h
  515.        32326  objects-x.c
  516.         2806  objects-x.h
  517.        31944  objects.c
  518.         6809  objects.h
  519.  
  520.        57511  menubar-x.c
  521.        11243  menubar.c
  522.  
  523.        25012  scrollbar-x.c
  524.         2554  scrollbar-x.h
  525.        26954  scrollbar.c
  526.         2778  scrollbar.h
  527.  
  528.        23117  toolbar-x.c
  529.        43456  toolbar.c
  530.         4280  toolbar.h
  531.  
  532.        25070  font-lock.c
  533.  
  534.    This file provides C support for syntax highlighting - i.e.
  535. highlighting different syntactic constructs of a source file in
  536. different colors, for easy reading.  The C support is provided so that
  537. this is fast.
  538.  
  539.        32180  dgif_lib.c
  540.         3999  gif_err.c
  541.        10697  gif_lib.h
  542.         9371  gifalloc.c
  543.  
  544.    These modules decode GIF-format image files, for use with glyphs.
  545.  
  546. 
  547. File: internals.info,  Node: Modules for the Redisplay Mechanism,  Next: Modules for Interfacing with the File System,  Prev: Modules for other Display-Related Lisp Objects,  Up: A Summary of the Various XEmacs Modules
  548.  
  549. Modules for the Redisplay Mechanism
  550. ===================================
  551.  
  552.         size  name
  553.      -------  ---------------------
  554.        38692  redisplay-output.c
  555.        40835  redisplay-tty.c
  556.        65069  redisplay-x.c
  557.       234142  redisplay.c
  558.        17026  redisplay.h
  559.  
  560.    These files provide the redisplay mechanism.  As with many other
  561. subsystems in XEmacs, there is a clean separation between the general
  562. and device-specific support.
  563.  
  564.    `redisplay.c' contains the bulk of the redisplay engine.  These
  565. functions update the redisplay structures (which describe how the screen
  566. is to appear) to reflect any changes made to the state of any
  567. displayable objects (buffer, frame, window, etc.) since the last time
  568. that redisplay was called.  These functions are highly optimized to
  569. avoid doing more work than necessary (since redisplay is called
  570. extremely often and is potentially a huge time sink), and depend heavily
  571. on notifications from the objects themselves that changes have occurred,
  572. so that redisplay doesn't explicitly have to check each possible object.
  573. The redisplay mechanism also contains a great deal of caching to further
  574. speed things up; some of this caching is contained within the various
  575. displayable objects.
  576.  
  577.    `redisplay-output.c' goes through the redisplay structures and
  578. converts them into calls to device-specific methods to actually output
  579. the screen changes.
  580.  
  581.    `redisplay-x.c' and `redisplay-tty.c' are two implementations of
  582. these redisplay output methods, for X frames and TTY frames,
  583. respectively.
  584.  
  585.        14129  indent.c
  586.  
  587.    This module contains various functions and Lisp primitives for
  588. converting between buffer positions and screen positions.  These
  589. functions call the redisplay mechanism to do most of the work, and then
  590. examine the redisplay structures to get the necessary information.  This
  591. module needs work.
  592.  
  593.        14754  termcap.c
  594.         2141  terminfo.c
  595.         7253  tparam.c
  596.  
  597.    These files contain functions for working with the termcap
  598. (BSD-style) and terminfo (System V style) databases of terminal
  599. capabilities and escape sequences, used when XEmacs is displaying in a
  600. TTY.
  601.  
  602.        10869  cm.c
  603.         5876  cm.h
  604.  
  605.    These files provide some miscellaneous TTY-output functions and
  606. should probably be merged into `redisplay-tty.c'.
  607.  
  608. 
  609. File: internals.info,  Node: Modules for Interfacing with the File System,  Next: Modules for Other Aspects of the Lisp Interpreter and Object System,  Prev: Modules for the Redisplay Mechanism,  Up: A Summary of the Various XEmacs Modules
  610.  
  611. Modules for Interfacing with the File System
  612. ============================================
  613.  
  614.         size  name
  615.      -------  ---------------------
  616.        43362  lstream.c
  617.        14240  lstream.h
  618.  
  619.    These modules implement the "stream" Lisp object type.  This is an
  620. internal-only Lisp object that implements a generic buffering stream.
  621. The idea is to provide a uniform interface onto all sources and sinks of
  622. data, including file descriptors, stdio streams, chunks of memory, Lisp
  623. buffers, Lisp strings, etc.  That way, I/O functions can be written to
  624. the stream interface and can transparently handle all possible sources
  625. and sinks.  (For example, the `read' function can read data from a
  626. file, a string, a buffer, or even a function that is called repeatedly
  627. to return data, without worrying about where the data is coming from or
  628. what-size chunks it is returned in.)
  629.  
  630.    Note that in the C code, streams are called "lstreams" (for "Lisp
  631. streams") to distinguish them from other kinds of streams, e.g. stdio
  632. streams and C++ I/O streams.
  633.  
  634.    Similar to other subsystems in XEmacs, lstreams are separated into
  635. generic functions and a set of methods for the different types of
  636. lstreams.  `lstream.c' provides implementations of many different types
  637. of streams; others are provided, e.g., in `mule-coding.c'.
  638.  
  639.       126926  fileio.c
  640.  
  641.    This implements the basic primitives for interfacing with the file
  642. system.  This includes primitives for reading files into buffers,
  643. writing buffers into files, checking for the presence or accessibility
  644. of files, canonicalizing file names, etc.  Note that these primitives
  645. are usually not invoked directly by the user: There is a great deal of
  646. higher-level Lisp code that implements the user commands such as
  647. `find-file' and `save-buffer'.  This is similar to the distinction
  648. between the lower-level primitives in `editfns.c' and the higher-level
  649. user commands in `commands.c' and `simple.el'.
  650.  
  651.        10960  filelock.c
  652.  
  653.    This file provides functions for detecting clashes between different
  654. processes (e.g. XEmacs and some external process, or two different
  655. XEmacs processes) modifying the same file.  (XEmacs can optionally use
  656. the `lock/' subdirectory to provide a form of "locking" between
  657. different XEmacs processes.)  This module is also used by the low-level
  658. functions in `insdel.c' to ensure that, if the first modification is
  659. being made to a buffer whose corresponding file has been externally
  660. modified, the user is made aware of this so that the buffer can be
  661. synched up with the external changes if necessary.
  662.  
  663.         4527  filemode.c
  664.  
  665.    This file provides some miscellaneous functions that construct a
  666. `rwxr-xr-x'-type permissions string (as might appear in an `ls'-style
  667. directory listing) given the information returned by the `stat()'
  668. system call.
  669.  
  670.        22855  dired.c
  671.         2094  ndir.h
  672.  
  673.    These files implement the XEmacs interface to directory searching.
  674. This includes a number of primitives for determining the files in a
  675. directory and for doing filename completion. (Remember that generic
  676. completion is handled by a different mechanism, in `minibuf.c'.)
  677.  
  678.    `ndir.h' is a header file used for the directory-searching emulation
  679. functions provided in `sysdep.c' (see section J below), for systems
  680. that don't provide any directory-searching functions. (On those
  681. systems, directories can be read directly as files, and parsed.)
  682.  
  683.         4311  realpath.c
  684.  
  685.    This file provides an implementation of the `realpath()' function
  686. for expanding symbolic links, on systems that don't implement it or have
  687. a broken implementation.
  688.  
  689. 
  690. File: internals.info,  Node: Modules for Other Aspects of the Lisp Interpreter and Object System,  Next: Modules for Interfacing with the Operating System,  Prev: Modules for Interfacing with the File System,  Up: A Summary of the Various XEmacs Modules
  691.  
  692. Modules for Other Aspects of the Lisp Interpreter and Object System
  693. ===================================================================
  694.  
  695.         size  name
  696.      -------  ---------------------
  697.        22290  elhash.c
  698.         2454  elhash.h
  699.        12169  hash.c
  700.         3369  hash.h
  701.  
  702.    These files implement the "hashtable" Lisp object type.  `hash.c'
  703. and `hash.h' provide a generic C implementation of hash tables (which
  704. can stand independently of XEmacs), and `elhash.c' and `elhash.h'
  705. provide a Lisp interface onto the C hash tables using the hashtable
  706. Lisp object type.
  707.  
  708.        95691  specifier.c
  709.        11167  specifier.h
  710.  
  711.    This module implements the "specifier" Lisp object type.  This is
  712. primarily used for displayable properties, and allows for values that
  713. are specific to a particular buffer, window, frame, device, or device
  714. class, as well as a default value existing.  This is used, for example,
  715. to control the height of the horizontal scrollbar or the appearance of
  716. the `default', `bold', or other faces.  The specifier object consists
  717. of a number of specifications, each of which maps from a buffer,
  718. window, etc. to a value.  The function `specifier-instance' looks up a
  719. value given a window (from which a buffer, frame, and device can be
  720. derived).
  721.  
  722.        43058  chartab.c
  723.         6503  chartab.h
  724.         9918  casetab.c
  725.  
  726.    `chartab.c' and `chartab.h' implement the "char table" Lisp object
  727. type, which maps from characters or certain sorts of character ranges
  728. to Lisp objects.  The implementation of this object type is optimized
  729. for the internal representation of characters.  Char tables come in
  730. different types, which affect the allowed object types to which a
  731. character can be mapped and also dictate certain other properties of
  732. the char table.
  733.  
  734.    `casetab.c' implements one sort of char table, the "case table",
  735. which maps characters to other characters of possibly different case.
  736. These are used by XEmacs to implement case-changing primitives and to
  737. do case-insensitive searching.
  738.  
  739.        49593  syntax.c
  740.        10200  syntax.h
  741.  
  742.    This module implements "syntax tables", another sort of char table
  743. that maps characters into syntax classes that define the syntax of these
  744. characters (e.g. a parenthesis belongs to a class of `open' characters
  745. that have corresponding `close' characters and can be nested).  This
  746. module also implements the Lisp "scanner", a set of primitives for
  747. scanning over text based on syntax tables.  This is used, for example,
  748. to find the matching parenthesis in a command such as `forward-sexp',
  749. and by `font-lock.c' to locate quoted strings, comments, etc.
  750.  
  751.        10438  casefiddle.c
  752.  
  753.    This module implements various Lisp primitives for upcasing,
  754. downcasing and capitalizing strings or regions of buffers.
  755.  
  756.        20234  rangetab.c
  757.  
  758.    This module implements the "range table" Lisp object type, which
  759. provides for a mapping from ranges of integers to arbitrary Lisp
  760. objects.
  761.  
  762.         3201  opaque.c
  763.         2206  opaque.h
  764.  
  765.    This module implements the "opaque" Lisp object type, an
  766. internal-only Lisp object that encapsulates an arbitrary block of memory
  767. so that it can be managed by the Lisp allocation system.  To create an
  768. opaque object, you call `make_opaque()', passing a pointer to a block
  769. of memory.  An object is created that is big enough to hold the memory,
  770. which is copied into the object's storage.  The object will then stick
  771. around as long as you keep pointers to it, after which it will be
  772. automatically reclaimed.
  773.  
  774.    Opaque objects can also have an arbitrary "mark method" associated
  775. with them, in case the block of memory contains other Lisp objects that
  776. need to be marked for garbage-collection purposes. (If you need other
  777. object methods, such as a finalize method, you should just go ahead and
  778. create a new Lisp object type - it's not hard.)
  779.  
  780.         8783  abbrev.c
  781.  
  782.    This function provides a few primitives for doing dynamic
  783. abbreviation expansion.  In XEmacs, most of the code for this has been
  784. moved into Lisp.  Some C code remains for speed and because the
  785. primitive `self-insert-command' (which is executed for all
  786. self-inserting characters) hooks into the abbrev mechanism.
  787. (`self-insert-command' is itself in C only for speed.)
  788.  
  789.        21934  doc.c
  790.  
  791.    This function provides primitives for retrieving the documentation
  792. strings of functions and variables.  These documentation strings contain
  793. certain special markers that get dynamically expanded (e.g. a
  794. reverse-lookup is performed on some named functions to retrieve their
  795. current key bindings).  Some documentation strings (in particular, for
  796. the built-in primitives and pre-loaded Lisp functions) are stored
  797. externally in a file `DOC' in the `lib-src/' directory and need to be
  798. fetched from that file. (Part of the build stage involves building this
  799. file, and another part involves constructing an index for this file and
  800. embedding it into the executable, so that the functions in `doc.c' do
  801. not have to search the entire `DOC' file to find the appropriate
  802. documentation string.)
  803.  
  804.        13197  md5.c
  805.  
  806.    This function provides a Lisp primitive that implements the MD5
  807. secure hashing scheme, used to create a large hash value of a string of
  808. data such that the data cannot be derived from the hash value.  This is
  809. used for various security applications on the Internet.
  810.  
  811.         7000  mocklisp.c
  812.  
  813.    This function provides some emulation of MockLisp, a version of Lisp
  814. provided in Gosling Emacs (aka Unipress Emacs), from which some old
  815. versions of GNU Emacs were derived.  You have to explicitly enable this
  816. code with a configure option and shouldn't normally, because it changes
  817. the semantics of XEmacs Lisp in ways that are not desirable for normal
  818. Lisp programs.
  819.  
  820. 
  821. File: internals.info,  Node: Modules for Interfacing with the Operating System,  Next: Modules for Interfacing with X Windows,  Prev: Modules for Other Aspects of the Lisp Interpreter and Object System,  Up: A Summary of the Various XEmacs Modules
  822.  
  823. Modules for Interfacing with the Operating System
  824. =================================================
  825.  
  826.         size  name
  827.      -------  ---------------------
  828.        33533  callproc.c
  829.        89697  process.c
  830.         4663  process.h
  831.  
  832.    These modules allow XEmacs to spawn and communicate with subprocesses
  833. and network connections.
  834.  
  835.    `callproc.c' implements (through the `call-process' primitive) what
  836. are called "synchronous subprocesses".  This means that XEmacs runs a
  837. program, waits till it's done, and retrieves its output.  A typical
  838. example might be calling the `ls' program to get a directory listing.
  839.  
  840.    `process.c' and `process.h' implement "asynchronous subprocesses".
  841. This means that XEmacs starts a program and then continues normally,
  842. not waiting for the process to finish.  Data can be sent to the process
  843. or retrieved from it as it's running.  This is used for the `shell'
  844. command (which provides a front end onto a shell program such as
  845. `csh'), the mail and news readers implemented in XEmacs, etc.  The
  846. result of calling `start-process' to start a subprocess is a process
  847. object, a particular kind of object used to communicate with the
  848. subprocess.  You can send data to the process by passing the process
  849. object and the data to `send-process', and you can specify what happens
  850. to data retrieved from the process by setting properties of the process
  851. object. (When the process sends data, XEmacs receives a process event,
  852. which says that there is data ready.  When `dispatch-event' is called
  853. on this event, it reads the data from the process and does something
  854. with it, as specified by the process object's properties.  Typically,
  855. this means inserting the data into a buffer or calling a function.)
  856. Another property of the process object is called the "sentinel", which
  857. is a function that is called when the process terminates.
  858.  
  859.    Process objects are also used for network connections (connections
  860. to a process running on another machine).  Network connections are
  861. started with `open-network-stream' but otherwise work just like
  862. subprocesses.
  863.  
  864.       136029  sysdep.c
  865.         5986  sysdep.h
  866.  
  867.    These modules implement most of the low-level, messy operating-system
  868. interface code.  This includes various device control (ioctl) operations
  869. for file descriptors, TTY's, pseudo-terminals, etc. (usually this stuff
  870. is fairly system-dependent; thus the name of this module), and emulation
  871. of standard library functions and system calls on systems that don't
  872. provide them or have broken versions.
  873.  
  874.         3605  sysdir.h
  875.         6708  sysfile.h
  876.         2027  sysfloat.h
  877.         2918  sysproc.h
  878.          745  syspwd.h
  879.         7643  syssignal.h
  880.         6892  systime.h
  881.        12477  systty.h
  882.         3487  syswait.h
  883.  
  884.    These header files provide consistent interfaces onto
  885. system-dependent header files and system calls.  The idea is that,
  886. instead of including a standard header file like `<sys/param.h>' (which
  887. may or may not exist on various systems) or having to worry about
  888. whether all system provide a particular preprocessor constant, or
  889. having to deal with the four different paradigms for manipulating
  890. signals, you just include the appropriate `sys*.h' header file, which
  891. includes all the right system header files, defines and missing
  892. preprocessor constants, provides a uniform interface onto system calls,
  893. etc.
  894.  
  895.    `sysdir.h' provides a uniform interface onto directory-querying
  896. functions. (In some cases, this is in conjunction with emulation
  897. functions in `sysdep.c'.)
  898.  
  899.    `sysfile.h' includes all the necessary header files for standard
  900. system calls (e.g. `read()'), ensures that all necessary `open()' and
  901. `stat()' preprocessor constants are defined, and possibly (usually)
  902. substitutes sugared versions of `read()', `write()', etc. that
  903. automatically restart interrupted I/O operations.
  904.  
  905.    `sysfloat.h' includes the necessary header files for floating-point
  906. operations.
  907.  
  908.    `sysproc.h' includes the necessary header files for calling
  909. `select()', `fork()', `execve()', socket operations, and the like, and
  910. ensures that the `FD_*()' macros for descriptor-set manipulations are
  911. available.
  912.  
  913.    `syspwd.h' includes the necessary header files for obtaining
  914. information from `/etc/passwd' (the functions are emulated under VMS).
  915.  
  916.    `syssignal.h' includes the necessary header files for
  917. signal-handling and provides a uniform interface onto the different
  918. signal-handling and signal-blocking paradigms.
  919.  
  920.    `systime.h' includes the necessary header files and provides uniform
  921. interfaces for retrieving the time of day, setting file
  922. access/modification times, getting the amount of time used by the XEmacs
  923. process, etc.
  924.  
  925.    `systty.h' buffers against the infinitude of different ways of
  926. controlling TTY's.
  927.  
  928.    `syswait.h' provides a uniform way of retrieving the exit status
  929. from a `wait()'ed-on process (some systems use a union, others use an
  930. int).
  931.  
  932.         7940  hpplay.c
  933.        10920  libsst.c
  934.         1480  libsst.h
  935.         3260  libst.h
  936.        15355  linuxplay.c
  937.        15849  nas.c
  938.        19133  sgiplay.c
  939.        15411  sound.c
  940.         7358  sunplay.c
  941.  
  942.    These files implement the ability to play various sounds on some
  943. types of computers.  You have to configure your XEmacs with sound
  944. support in order to get this capability.
  945.  
  946.    `sound.c' provides the generic interface.  It implements various
  947. Lisp primitives and variables that let you specify which sounds should
  948. be played in certain conditions. (The conditions are identified by
  949. symbols, which are passed to `ding' to make a sound.  Various standard
  950. functions call this function at certain times; if sound support does
  951. not exist, a simple beep results.
  952.  
  953.    `sgiplay.c', `sunplay.c', `hpplay.c', and `linuxplay.c' interface to
  954. the machine's speaker for various different kind of machines.  This is
  955. called "native" sound.
  956.  
  957.    `nas.c' interfaces to a computer somewhere else on the network using
  958. the NAS (Network Audio Server) protocol, playing sounds on that
  959. machine.  This allows you to run XEmacs on a remote machine, with its
  960. display set to your local machine, and have the sounds be made on your
  961. local machine, provided that you have a NAS server running on your local
  962. machine.
  963.  
  964.    `libsst.c', `libsst.h', and `libst.h' provide some additional
  965. functions for playing sound on a Sun SPARC but are not currently in use.
  966.  
  967.        44368  tooltalk.c
  968.         2137  tooltalk.h
  969.  
  970.    These two modules implement an interface to the ToolTalk protocol,
  971. which is an interprocess communication protocol implemented on some
  972. versions of Unix.  ToolTalk is a high-level protocol that allows
  973. processes to register themselves as providers of particular services;
  974. other processes can then request a service without knowing or caring
  975. exactly who is providing the service.  It is similar in spirit to the
  976. DDE protocol provided under Microsoft Windows.  ToolTalk is a part of
  977. the new CDE (Common Desktop Environment) specification and is used to
  978. connect the parts of the SPARCWorks development environment.
  979.  
  980.        22695  getloadavg.c
  981.  
  982.    This module provides the ability to retrieve the system's current
  983. load average. (The way to do this is highly system-specific,
  984. unfortunately, and requires a lot of special-case code.)
  985.  
  986.       148520  energize.c
  987.         6896  energize.h
  988.  
  989.    This module provides code to interface to an Energize server (when
  990. XEmacs is used as part of Lucid's Energize development environment) and
  991. provides some other Energize-specific functions.  Much of the code in
  992. this module should be made more general-purpose and moved elsewhere, but
  993. is no longer very relevant now that Lucid is defunct.  It also hasn't
  994. worked since version 19.12, since nobody has been maintaining it.
  995.  
  996.         2861  sunpro.c
  997.  
  998.    This module provides a small amount of code used internally at Sun to
  999. keep statistics on the usage of XEmacs.
  1000.  
  1001.         5548  broken-sun.h
  1002.         3468  strcmp.c
  1003.         2179  strcpy.c
  1004.         1650  sunOS-fix.c
  1005.  
  1006.    These files provide replacement functions and prototypes to fix
  1007. numerous bugs in early releases of SunOS 4.1.
  1008.  
  1009.        11669  hftctl.c
  1010.  
  1011.    This module provides some terminal-control code necessary on
  1012. versions of AIX prior to 4.1.
  1013.  
  1014.         1776  acldef.h
  1015.         1602  chpdef.h
  1016.         9032  uaf.h
  1017.          105  vlimit.h
  1018.         7145  vms-pp.c
  1019.         1158  vms-pwd.h
  1020.        26532  vmsfns.c
  1021.         6038  vmsmap.c
  1022.          695  vmspaths.h
  1023.        17482  vmsproc.c
  1024.          469  vmsproc.h
  1025.  
  1026.    All of these files are used for VMS support, which has never worked
  1027. in XEmacs.
  1028.  
  1029.        28316  msdos.c
  1030.         1472  msdos.h
  1031.  
  1032.    These modules are used for MS-DOS support, which does not work in
  1033. XEmacs.
  1034.  
  1035. 
  1036. File: internals.info,  Node: Modules for Interfacing with X Windows,  Next: Modules for Internationalization,  Prev: Modules for Interfacing with the Operating System,  Up: A Summary of the Various XEmacs Modules
  1037.  
  1038. Modules for Interfacing with X Windows
  1039. ======================================
  1040.  
  1041.         size  name
  1042.      -------  ---------------------
  1043.         3196  Emacs.ad.h
  1044.  
  1045.    A file generated from `Emacs.ad', which contains XEmacs-supplied
  1046. fallback resources (so that XEmacs has pretty defaults).
  1047.  
  1048.        24242  EmacsFrame.c
  1049.         6979  EmacsFrame.h
  1050.         3351  EmacsFrameP.h
  1051.  
  1052.    These modules implement an Xt widget class that encapsulates a frame.
  1053. This is for ease in integrating with Xt.  The EmacsFrame widget covers
  1054. the entire X window except for the menubar; the scrollbars are
  1055. positioned on top of the EmacsFrame widget.
  1056.  
  1057.    *Warning:* Abandon hope, all ye who enter here.  This code took an
  1058. ungodly amount of time to get right, and is likely to fall apart
  1059. mercilessly at the slightest change.  Such is life under Xt.
  1060.  
  1061.         8178  EmacsManager.c
  1062.         1967  EmacsManager.h
  1063.         1895  EmacsManagerP.h
  1064.  
  1065.    These modules implement a simple Xt manager (i.e. composite) widget
  1066. class that simply lets its children set whatever geometry they want.
  1067. It's amazing that Xt doesn't provide this standardly, but on second
  1068. thought, it makes sense, considering how amazingly broken Xt is.
  1069.  
  1070.        13188  EmacsShell-sub.c
  1071.         4588  EmacsShell.c
  1072.         2180  EmacsShell.h
  1073.         3133  EmacsShellP.h
  1074.  
  1075.    These modules implement two Xt widget classes that are subclasses of
  1076. the TopLevelShell and TransientShell classes.  This is necessary to deal
  1077. with more brokenness that Xt has sadistically thrust onto the backs of
  1078. developers.
  1079.  
  1080.         9673  xgccache.c
  1081.         1111  xgccache.h
  1082.  
  1083.    These modules provide functions for maintenance and caching of GC's
  1084. (graphics contexts) under the X Window System.  This code is junky and
  1085. needs to be rewritten.
  1086.  
  1087.        69181  xselect.c
  1088.  
  1089.    This module provides an interface to the X Window System's concept of
  1090. "selections", the standard way for X applications to communicate with
  1091. each other.
  1092.  
  1093.          929  xintrinsic.h
  1094.         1038  xintrinsicp.h
  1095.         1579  xmmanagerp.h
  1096.         1585  xmprimitivep.h
  1097.  
  1098.    These header files are similar in spirit to the `sys*.h' files and
  1099. buffer against different implementations of Xt and Motif.
  1100.  
  1101.    * `xintrinsic.h' should be included in place of `<Intrinsic.h>'.
  1102.  
  1103.    * `xintrinsicp.h' should be included in place of `<IntrinsicP.h>'.
  1104.  
  1105.    * `xmmanagerp.h' should be included in place of `<XmManagerP.h>'.
  1106.  
  1107.    * `xmprimitivep.h' should be included in place of `<XmPrimitiveP.h>'.
  1108.  
  1109.        16930  xmu.c
  1110.          936  xmu.h
  1111.  
  1112.    These files provide an emulation of the Xmu library for those systems
  1113. (i.e. HPUX) that don't provide it as a standard part of X.
  1114.  
  1115.         4201  ExternalClient-Xlib.c
  1116.        18083  ExternalClient.c
  1117.         2035  ExternalClient.h
  1118.         2104  ExternalClientP.h
  1119.        22684  ExternalShell.c
  1120.         1709  ExternalShell.h
  1121.         1971  ExternalShellP.h
  1122.         2478  extw-Xlib.c
  1123.         1481  extw-Xlib.h
  1124.         6565  extw-Xt.c
  1125.         1430  extw-Xt.h
  1126.  
  1127.    These files provide the "external widget" interface, which allows an
  1128. XEmacs frame to appear as a widget in another application.  To do this,
  1129. you have to configure with `--external-widget'.
  1130.  
  1131.    `ExternalShell*' provides the server (XEmacs) side of the connection.
  1132.  
  1133.    `ExternalClient*' provides the client (other application) side of
  1134. the connection.  These files are not compiled into XEmacs but are
  1135. compiled into libraries that are then linked into your application.
  1136.  
  1137.    `extw-*' is common code that is used for both the client and server.
  1138.  
  1139.    Don't touch this code; something is liable to break if you do.
  1140.  
  1141.        31014  epoch.c
  1142.  
  1143.    This file provides some additional, Epoch-compatible, functionality
  1144. for interfacing to the X Window System.
  1145.  
  1146.